import LoginSYS
#start to play
player_now = LoginSYS.start_to_play()#the list with id and name
id_now = player_now[0] #we get it so we can print it during our fucking game and after it
name_now = player_now[1]
# print(id_now)
# print(name_now)
import time
time.sleep(0.3)
#==============================
import cocos
from pygame import mixer
import define
from arena import Arena
from gameover import Gameover
import DataBase
class HelloWorld(cocos.layer.Layer):
    #下面是将一个类或对象标记为事件处理器（Event Handler）的属性设置。
    is_event_handler = True

    def __init__(self):
        self.id_now = id_now
        self.name_now = name_now
        filepath = r'贪吃蛇背景音乐.mp3'
        mixer.init()
        #add music
        mixer.music.load(filename=filepath)
        mixer.music.play(start = 0.0)

        super(HelloWorld, self).__init__()
        self.arena = Arena()
        self.add(self.arena)
        #在您的屏幕的左边加上实时的SCORE显示哟，宝贝---------------HAO
        self.score_title = cocos.text.Label('SCORE',
                                      font_name='Times New Roman',
                                      font_size=48,
                                      color=define.SKY_BLUE)
        #分数在这里yo
        self.score_title.position = 20, 540 #SCORE 字样在玩家屏幕上的位置
        self.add(self.score_title, 99999) #啦啦啦，不要忘了加上呀，宝---------------HAO，2023.12.5
        
        #在您的屏幕的左边加上name显示哟，宝贝---------------HAO
        self.name_now_title = cocos.text.Label(name_now,
                                      font_name='Times New Roman',
                                      font_size=48,
                                      color=define.SKY_BLUE)
        
        self.name_now_title.position = 20, 900 #SCORE 字样在玩家屏幕上的位置
        self.add(self.name_now_title, 99999) #啦啦啦，不要忘了加上呀，宝---------------HAO，2023.12.5
 
        self.score = cocos.text.Label('30',
                                      font_name='Times New Roman',
                                      font_size=48,
                                      color=define.SKY_BLUE)
        #天空是蔚蓝色，haohao的python呢
        self.score.position = 30, 440 #我们真正的分数显示的屏幕上的位置
        self.add(self.score, 99999) #同理，加上

        self.gameover = Gameover() #加上这个游戏才能有正常的退出yo
        self.add(self.gameover, 100000) #self.add 不加的话就相当于没有

    def update_score(self):#我们的界面分数是实时更新的，不然就一直是30在显示，有了这个就可以刷新左边分数显示
        self.score.element.text = str(self.arena.snake.score)  #不要忘了我们要的是str，所以要转换yo

    def end_game(self):
        #add the dead music 
        filepath = r'自己被杀.mp3' #pygame的mixer播放音乐不要太好用!!!
        mixer.init()
        #add music
        mixer.music.load(filename=filepath)#很简单，但是我没能同时用mixer播放两个音乐
        mixer.music.play(start= 0.4) #说的是本音频文件从他的 第0.4秒 开始播放(单位是秒)
        #============================================music end=============
        DataBase.bigger_update(id_now, str(self.arena.snake.score))
        #------------------------------------------------
        self.score_text = DataBase.readf_top12_to_str()
        self.lines = self.score_text.split('\n')
        for i in range(12):
            self.gameover.label[i].element.text = self.lines[i]

        # self.gameover.
        # lines = self.text.split('\n')
        # line_height = 50  # 每行的高度

        # for i, line in enumerate(lines):
        #     self.label = cocos.text.Label(line,
        #                             font_name='SimHei',
        #                             font_size=36,
        #                             color=define.SKY_BLUE)
        #     self.label.position = 650, 600 - i * line_height
        #     self.add(self.label)
        #-----------------------------------------------------
        self.gameover.visible = True  #当当当当！！bubububub!!
        #我们在游戏结束时，当然要把我们的结算图层可视化呀
        # self.gamenoover.over_id = id_now--------buubububbubuubububuububbubulallalalalallala
        self.gameover.score.element.text = str(self.arena.snake.score) #结算时的分数

    def on_mouse_press(self, x, y, buttons, modifiers): #检测鼠标点击事件，重开游戏
        if self.gameover.visible: #如果现在可以看到gameover层，说明现在已经die了
            self.gameover.visible = False  #那么我们就重新令图层不可视，因为重开了
            self.arena.unschedule(self.arena.update) #将竞技场的更新停下来
            self.remove(self.arena) #将竞技场remove掉
            self.arena = Arena() #重开新的竞技场
            self.add(self.arena) #不要忘了add，很重要--------------HAO.2023.12.5
            self.update_score() #现在开始更新score

#===========================
import pygame
pygame.init()
vInfo = pygame.display.Info()
# window_w, window_h = 800, 600
size = window_w, window_h = vInfo.current_w, vInfo.current_h
ck = pygame.display.set_mode((window_w,window_h),pygame.FULLSCREEN)   #  游戏窗口
background = pygame.image.load("原神启动.png")
background = pygame.transform.scale(background,(window_w,window_h))
pygame.display.set_caption("壁球小游戏")    #  给窗口取个名 
clock = pygame.time.Clock()                         #  游戏刷新速度（我个人这么理解）
start_ck = pygame.Surface(ck.get_size())    #   充当开始界面的画布
start_ck2 = pygame.Surface(ck.get_size())  #  充当第一关的画布界面暂时占位（可以理解为游戏开始了）
# start_ck = start_ck.convert()
start_ck2 = start_ck2.convert()
start_ck.blit(background,(0,0))  # 画布1（开始界面用的）
# 加载各个素材图片 并且赋予变量名
i1 = pygame.image.load("开始游戏.png")
i1.convert()
i11 = pygame.image.load("开始游戏2.png")
i11.convert()

i2 = pygame.image.load("结束游戏.png")
i2.convert()
i21 = pygame.image.load("结束游戏2.png")
i21.convert()

i3 = pygame.image.load('PYG02-ball.gif')
i3.convert()
i31 = pygame.image.load('PYG03-flower.png')
i31.convert()

bg = pygame.image.load('PYG03-withered-flower.png')
bg.convert()


#  以下为选择开始界面鼠标检测结构。
n1 = True
while n1:
    clock.tick(30)
    buttons = pygame.mouse.get_pressed()
    x1, y1 = pygame.mouse.get_pos()
    if x1 >= 227 and x1 <= 555 and y1 >= 261 and y1 <=327:
        start_ck.blit(i11, (200, 240))
        if buttons[0]:
            n1 = False

    elif x1 >= 227 and x1 <= 555 and y1 >= 381 and y1 <=447:
        start_ck.blit(i21, (200, 360))
        if buttons[0]:
            pygame.quit()
            exit()

    elif x1 >= 227 and x1 <= 555 and y1 >= 501 and y1 <=567:
        start_ck.blit(i31, (200, 480))
    else:
        start_ck.blit(i1, (200, 240))
        start_ck.blit(i2, (200, 360))
        start_ck.blit(i3, (200, 480))


    ck.blit(start_ck,(0,0))
    pygame.display.update()
    # 下面是监听退出动作

    # 监听事件
    for event in pygame.event.get():

        # 判断事件类型是否是退出事件
        if event.type == pygame.QUIT:
            print("游戏退出...")

            # quit 卸载所有的模块
            pygame.quit()

            # exit() 直接终止当前正在执行的程序
            exit()
ck.blit(start_ck2,(0,0))
pygame.display.update()
#========================================



#为HAO的游戏加上标题，并设置为全屏，够大才畅快！
# 初始化Cocos导演（Director）的函数调用。
# HAO设置了游戏窗口的标题为"Gluttonous Python game"，并启用了全屏模式。
# cocos.director.director.init(caption="Gluttonous Python game",fullscreen = False)
cocos.director.director.init(width = 1800, height = 1000,caption="Gluttonous Python",fullscreen = True)
#用于运行游戏场景的函数调用。它用HelloWorld()场景，
# 并将其作为参数传递给cocos.scene.Scene函数。
# 然后，通过cocos.director.director.run函数来运行该场景，使游戏开始执行
cocos.director.director.run(cocos.scene.Scene(HelloWorld()))

